package cn.smile.commons.response;

/**
 * <p>
 * API 统一返回状态码
 * </p>
 *
 * @author 龙逸
 * @since 2020-08-20
 */
//@SuppressWarnings("SpellCheckingInspection")
public enum MyResponseCode {

    /**
     * 未知错误
     */
    UNKNOWN(-1, "未知错误,请联系管理员"),

    /**
     * 请求成功
     */
    SUCCESS(0, "成功"),
    // ------------------------------------------------------- 客户端错误：4000-4999 Start
    NOT_FOUND(4004, "资源未找到"),
    UNDEFINED(4005, "请求参数格式错误"),
    REQ_METHOD_ERROR(4006, "请求方法错误"),
    USER_NOT_LOGGED_IN(4101, "用户未登录"),
    USERNAME_OR_PASSWORD_ERROR(4102, "用户名或密码错误"),
    USER_DISABLED_ERROR(4103, "用户已禁用"),
    BAN_IP_ACCESS(4105, "限制访问, 请联系管理员"),
    SUSPEND_VISIT_IP_ERROR(4107, "限制登录用户, 请20分钟后重试"),
    // ------------------------------------------------------- 客户端错误：4000-4999 End

    // ------------------------------------------------------- 服务端错误：5000-5999 Start
    /**
     * 数据未找到
     */
    SYSTEM_ERROR(5000, "系统错误, 请联系管理员"),
    RESULT_DATA_NONE(5001, "数据不存在"),
    NULL_MAIL_CONTENT(5002, "消息内容获取失败"),
    DATA_EXIST_ERROR(5003, "数据已存在"),
    REGISTER_USER_ERROR(5004, "注册次数过多, 请稍后再试"),
    LOGIN_ID_EXIST_ERROR(5005, "登录账号已存在"),
    FILE_NAME_ERROR(5006, "上传文件名称为空"),
    ERROR_MIN_IO_BUCKET(5007, "MinIO 文件存储异常"),
    COUNT_DATE_ERROR(5008, "计算时间异常"),
    OLD_PASSWORD_ERROR(5009, "原密码错误, 不可修改"),
    CONFIRM_PASSWORD_ERROR(5010, "新密码与确认密码不一致"),
    NO_CHANGE_PASSWORD_ERROR(5011, "新密码与旧密码一致"),
    STRING_TO_DATETIME_ERROR(5012, "字符串转时间异常"),
    DATABASE_FIELD_ENCRYPT_AES(5013, "数据库字段 AES 加密失败"),
    DATABASE_FIELD_DECRYPT_AES(5014, "数据库字段 AES 解密失败"),
    DATABASE_FIELD_ENCRYPT_BASE64(5015, "数据库字段 Base64 加密失败"),
    DATABASE_FIELD_DECRYPT_BASE64(5016, "数据库字段 Base64 解密失败"),
    SHARE_CODE_ERROR(5017, "共享关系绑定码"),
    SHARE_USER_ID_ERROR(5018, "共享关系不存在"),
    SHARE_BIND_MY_ERROR(5019, "不可使用自己的绑定编码"),
    SHARE_BIND_EXIST_ERROR(5020, "已存在互相绑定关系"),
    WE_CHAT_CONFIG_STOP_ERROR(5021, "微信公众号配置已停用"),
    NET_FILE_DOWNLOAD_ERROR(5022, "网络文件下载异常"),
    A_LI_YUN_CLIENT_ERROR(5023, "创建阿里云 Client 异常"),
    A_LI_YUN_CHANGE_ERROR(5024, "阿里云动态域名解析异常"),
    BUSINESS_ERROR(5999, "自定义业务错误");
    // ------------------------------------------------------- 服务端错误：5000-5999 End

    private final Integer code;

    private final String message;

    MyResponseCode(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public Integer code() {
        return this.code;
    }

    public String message() {
        return this.message;
    }

    @Override
    public String toString() {
        return this.name();
    }
}
